package com.csx.base.design.structure.composite;

/**
 * @author cuisongxu
 * @date 2022/9/16 12:07
 * 抽象节点类
 */
public abstract class Node {

    /**
     * 节点命名
     */
    protected String name;

    /**
     * 构造方法需要传入节点名
     * @param name 节点名
     */
    public Node(String name) {
        this.name = name;
    }

    /**
     * 添加节点
     * @param child
     */
    protected abstract void add(Node child);

    protected void tree(int space) {
        for (int i = 0; i < space; i++) {
            System.out.print(" ");
        }
        System.out.println(name);
    }

    /**
     * 无重载方法，默认从第0行展示
     */
    protected void tree() {
        this.tree(0);
    }
}
